#!/bin/bash
echo `readlink -f $0`
# Muestra un listado de los archivos existentes en el directorio recibido ($1)
function mostrarDirectorio()
{
	local formato='s/^.*$/\t&/'
	ls -1 $1 | sed $formato
}

# Carga las variables de ambiente del archivo de configuración
function leerConfiguracion()
{
	configFile=`cat .pathInstalaW5.conf`

	if ! [ -e $configFile ]; then
		echo "El archivo de configuracion no existe"
		return 2 
	fi
	if ! [ -r $configFile ]; then
		echo "No se tienen los permisos de lectura del archivo de configuracion"
		return 3
	fi
	scriptConfig=$path'leerConfig.sh'	
	if ! [ -x $scriptConfig ]; then
		echo "No se tienen los permisos para ejecutar $scriptConfig"
		return 4
	fi
	. $scriptConfig $configFile
	return 0
}

# Muestra la configuración de las variables de ambiente de este sistema
function mostrarConfiguracion()
{
	echo 'TP SO7508 Segundo Cuatrimestre 2012. Tema W Copyright © Grupo xx'
	echo 'Libreria del sistema: '$CONFDIR
	mostrarDirectorio $CONFDIR
	echo 'Ejecutables: '$BINDIR
	mostrarDirectorio $BINDIR
	return 0
}

# Verifica que todos los componentes de la instalación existan
function verificarInstalacion()
{
	# TODO
	return 0
}

dirActual=$PWD
path=`readlink -f $0`
path=${path%'/'*}'/'

cd $path
echo $path

# Verificar si el proceso está siendo invocado como hijo
if [ ${0##*/} != 'bash' ]; then
	echo "Error: IniciarW5 no debe ser corrido como proceso hijo"
	exit -1
fi

# Verificar si el ambiente fue inicializado previamente
ambienteInicializado=0
if [ $BINDIR ]; then
	export BINDIR
	perl $loggerBin -m="Comando $comando Inicio de Ejecucion" -i -l="$comando"
	mostrarConfiguracion
	echo 'Proceso de Inicializacion Cancelado'
	return 1
fi

leerConfiguracion
codigo=$?
if [ $codigo -ne 0 ]; then
	cd $dirActual
	return $codigo
fi

# Iniciar el archivo de log
loggerBin=$BINDIR'/Logger.pl'
comando='IniciarW5'
export BINDIR
perl $loggerBin -m="Comando $comando Inicio de Ejecucion" -i -l="$comando"

# Añadimos el directorio de ejecutables al path del sistema
PATH=$PATH:$BINDIR
export PATH

verificarInstalacion
codigo=$?
echo "Se termino de verificar la instalacion con codigo de salida $codigo"
if [ $codigo -ne 0 ]; then
	echo "Instalacion incompleta"
	return 4
fi

# Verificar si DetectaW5 está corriendo en la sesión y sino ejecutarlo en background
pidDetectaW5=`ps | grep DetectaW5.sh | cut -f 2 -d " "`
echo $pidDetectaW5
if [ "$pidDetectaW5" != '' ]; then
	echo "Demonio corriendo bajo el Nro: $pidDetectaW5"
else
	echo #DetectaW5 &
fi

cd $dirActual
return 0
